模糊测试器难以发现的典型安全性漏洞有哪些
模糊测试器难以发现的典型安全性漏洞有:
访问控制漏洞:有些应用需要分级的权限模型来支持多账户或是不同级别的用户。例如,考虑一个通过Web前端访问的在线日程安排系统。该应用有一个管理员,管理员可以控制哪些用户能够登录到这个系统。除管理员外,该系统中还有一个特别的用户组,这组用户具有创建日程的权限。除此之外,其他用户只有读权限。在这个系统中,最基本的权限控制是保证一个普通用户无法执行管理员才能执行的任务。
糟糕的设计逻辑:模糊测试器也不是发现糟糕的逻辑设计的最佳工具。例如,考虑在Veritas Backup Exec中发现的一个安全漏洞。该安全漏洞允许攻击者远程控制Windows服务器并能创建、修改、删除注册表中的键值。这个漏洞导致攻击者几乎可以完全控制系统。这个问题产生的原因是 Windows 服务器中一个基于 TCP 实现远程过程调用的接口,该接口接受修改注册表的指令,并且完全不需要认证。实际上,这不是一个认证问题。因为 Windows 服务器就是这样设计的。这只能说是一个不合适的设计决定,该决定可能因为设计者认为攻击者更愿意花费时间来破译Microsoft接口描述语言,并据此设计一个工具来与服务器交互,而不是花时间去寻找RPC服务的漏洞。
后门:如果一个模糊测试器对被测应用的结构只有很少的了解,后门看上去与其他的正常逻辑没什么不同。考虑一个应用的登录界面,无论是后门还是正常登录逻辑,都是接受输入并返回认证后的身份信息。不仅如此,除非模糊测试器有足够的信息识别成功的登录,否则,即使这个模糊测试器偶然发现了一个固定的口令,它仍然没有办法识别出这个安全漏洞。在对口令域进行模糊测试时,如果某个输入导致应用发生崩溃,这种漏洞通常可以被发现;但一个通过随机猜测可以被发现的,能进入系统的硬编码的口令就不会被发现。
破坏:内存破坏问题通常会导致被测应用的崩溃。这类问题可以根据与拒绝服务类似的症状来加以识别和发现。然而,有些内存错误问题会被被测应用掩盖,因此简单的模糊测试器永远都发现不了这类问题。
多阶段安全漏洞:可利用性不总意味着像攻击单一弱点那么简单。复杂的攻击通常通过连续利用若干个安全漏洞来获得机器的控制权:起先通过漏洞让机器接受未被授权的访问,然后利用其他漏洞缺陷获得更大的权限。模糊测试对识别单独的漏洞很有用,但通常而言,模糊测试对那些小的漏洞链构成的漏洞,或是让人不感兴趣的事件构成的多向量攻击的识别作用不大。